#!/usr/bin/env bash
#=========HEADER==========================================|
#AUTOR
# Jefferson Rocha <lrcjefferson@gmail.com>
#
#PROGRAMA
# go4million - Vida Criminal
#
#DESCRIÇÃO
# Jogo de criminoso totalmente lunático.
#=========================================================|
# Iniciando Cor do ambiente
ambient="\e[32;40;1m"
printf "$ambient"
clear

#====TESTES========================#

#==================================#

#====BIBLIOTECAS===================#
. go4million.msg
. go4million.persons
#==================================#

#====VARIAVEIS=====================#
GAME="Go4Million - Vida Criminal"
VERSION="0.2beta"

#Cartões de dinheiro
greencard="0"

#Jogador
MONEY="500"
LIFE="10"
GUN="Pistola 32"
REPUTATION="50"

#Cores
red="\e[31;1m"
blue="\e[44;1m"
cyan="\e[36;1m"
yellow="\e[33;1m"
pink="\e[35;1m"
white="\e[37;1m"
underline="\e[4m"
end="\e[m"

#==================================#

#====FUNCOES=======================#

########## AJUDA ##############
HELP()
{
   clear
cat <<EOF
${GAME} versão ${VERSION}.
2018 - Jefferson Rocha
Este jogo é ficticio e o desenvolvedor não se resposabiliza por nada!

------- INSTRUÇÕES
O seu objetivo é chegar a 1 MILHÃO de reais sem morrer antes é claro.
${GAME} não possui pointsave ou seja, saiu/morreu o jogo reseta.
Para conseguir o tão sonhado 1 MILHÃO você deve fazer tudo que é mais errado
nesta vida! 
Assaltos, planejamento, serial killer etc... Tudo dependerá de você e claro do jogo.
Você tem ${LIFE} vidas de inicio, se você estiver com sorte você ira conseguir
pontos de vida ao decorrer do jogo, tome cuidado a onde você se mete pois se sua
sorte não estiver com você é vida a menos na certa, afinal o jogo é randômico e depende da
sorte.

------- DICA
Consiga o máximo de dinheiro no inicio para comprar armas! você necessita delas para
conseguir ter um maior sucesso em suas tramoias.
Cuide da sua reputação! se sua reputação for baixa e entrar aonde não deveria você perde tudo!

------ CARTÃO VERDE
digite no jogo greencard e ganhe 500 Reais.

Bom jogo.

EOF
ENTER # função
}

########## Ferramenta ##########

BAR() # Barra
{
   printf "${blue} Dinheiro: ${MONEY} R$ | "
   printf "${blue} Reputação: ${REPUTATION} | "
   printf "${blue} Vida: ${LIFE}/10 |${end}\n"
   printf "${blue} Arma: ${GUN} ${end}\n\n "
}

LIFE_CONFERENCE() # Conferencia de vida
{
   if [ "$LIFE" -eq "0" ]; then
      printf "Suas vidas acabaram.\n"
      printf "GAME OVER.\n"
      exit 1
   fi
}

ENTER() # Enter
{
   printf "\nEnter para prosseguir"; read
}

########## COMBATE #########

COMBAT()
{
   PERSON_LIFE="100" # Vida da vitima
   TOTAL="0"          # Valor total
   printf "${underline}VÍTIMA:${end}${white} ${PERSON[$RANDOM_VITIM]}${end}\n\n" # Nome da vítima.
   while true; do
      if [ "$PERSON_LIFE" -eq "0" ] || [ "$PERSON_LIFE" -lt "0" ]; then # Menor que 0 vaza.
            printf "\nVocê Mando ${PERSON[$RANDOM_VITIM]} Para as profundezas!\n"
            break
      fi
      sleep 0.4s
      # Gerando um hit aleatorio.
      hit=$(($RANDOM % 10))
      case $hit in
         1) # Cabeça
           _head="100"
           PERSON_LIFE=$(($PERSON_LIFE - $_head))
           REPUTATION=$(($REPUTATION + 1)) # reputação +1
           MONEY=$(($MONEY + 200))         # Dando 200 conto para o player.
           printf "${cyan}-->Você Acertou a Cabeça. Foi FATAL!${end}\n"
           printf "\n\nBoa pontaria! Você recebeu 200 reais de bônus pelo belo tiro!!\n"
           printf "+1 de Reputação!\n"
           break
         ;;

         2) # Pescoço
           _neck="30"
           PERSON_LIFE=$(($PERSON_LIFE - $_neck))
           printf "${yellow}-->Você Acertou o Pescoço. Quase fatal! Vida: ${PERSON_LIFE}/100${end}\n"
         ;;
 
         3) # Barriga
           _belly="20" 
           PERSON_LIFE=$(($PERSON_LIFE - $_belly))
           printf "${pink}-->Você Acertou a Barriga. Essa doeu! Vida: ${PERSON_LIFE}/100${end}\n"
         ;;

         4) # Perna direita
           _leg_right="12" 
           PERSON_LIFE=$(($PERSON_LIFE - $_leg_right))
           printf "${white}-->Você Acertou a Perna Direita. Não anda mais! Vida: ${PERSON_LIFE}/100${end}\n"  
         ;;

         5) # Perna esquerda
            _leg_left="13" 
           PERSON_LIFE=$(($PERSON_LIFE - $_leg_left))
           printf "${white}-->Você Acertou a Perna Esquerda. Vida: ${PERSON_LIFE}/100${end}\n"  
         ;;

         6) # Outro 
            _other="3"
           PERSON_LIFE=$(($PERSON_LIFE - $_other))
           printf "${white}-->Você Acertou alguma parte. Vida: ${PERSON_LIFE}/100${end}\n" 
         ;;

         7) # Raspão
           _scrape="2"
           PERSON_LIFE=$(($PERSON_LIFE - $_scrape))
           printf "${white}-->De Raspão! Vida: ${PERSON_LIFE}/100${end}\n"       
         ;;

         *) # Errou
           _missed="0"
           printf "${red}-->Você errou o tiro!${end}\n"
         ;;
      esac
   done
}


########## LOCAIS ##########
# Zona
ZONE() 
{
   # Variaveis somente local
   typeset choice
   typeset ALEATORY_MSG
   typeset DESTINY

   # Valor que a puta recebe
   typeset receive="100"

cat <<EOF
Chegamos na zona mais motherfuck da cidade.
Podemos começar a fazer alguma coisa, o que deseja fazer?

1) Matar geral
2) Sexo
EOF
while : ;do
   printf "\n> "; read choice
   choice="${choice^^}"                # Tudo em maiusculo.
   if [ "$choice" = "1" ]; then
      if [ $((($RANDOM % 12)+1)) -gt "5" ]; then # > 9, 1 vida a menos.
         LIFE=$(($LIFE - 1))           # Decremento da vida.
         ALEATORY_NUMBER_MSG=$((($RANDOM % $msg_number_over)+1))  # Número aleatorio para mensagem 
         printf "${red}${MSG_OVER[$ALEATORY_NUMBER_MSG]}${end}\n" # Mensagem aleatoria
         LIFE_CONFERENCE # Conferindo se vida acabou.
         if [ $((($RANDOM % 6)+1)) -eq "3" ]; then # Se for cagado perde tbm 100 reais
            MONEY=$(($MONEY - 200))
            printf "${red}-SORTUDO! Você perdeu 200 R\$!${end}\n"
         fi
         printf "${red}-Você perdeu 1 vida! lhe restam mais: ${LIFE}.${end}\n"
         ENTER # Função enter.
         break
      else
         RANDOM_VITIM=$(($RANDOM % $persons))
         COMBAT # Chamada da função para matação.
         printf "${cyan}+200 reais.${end}\n"
         MONEY=$(($MONEY + 200)) # Duzentinho para o jogadoh
         ENTER # Função enter.
         break
      fi
   elif [ "$choice" = "2" ]; then
      ALEATORY_NUMBER_MSG=$((($RANDOM % $msg_number_sex)+1))
      [ "$ALEATORY_NUMBER_MSG" -eq "1" ] && LIFE=$(($LIFE + 1)) # Igual a 1? ganha 1 vida.
      [ "$ALEATORY_NUMBER_MSG" -eq "5" ] && receive="200"
      printf "${cyan}${MSG_SEX[$ALEATORY_NUMBER_MSG]}${end}\n"
      MONEY=$(($MONEY - $receive))
      ENTER # Prosseguir.
      break 
   else
      printf "? Cê tá maluco, digita a porra certa KCTA.\n"
      continue
   fi
done
}


#### PEQUENOS FURTOS
SMALL_THEFT()
{
   printf "Em desenvolvimento\n"
   ENTER
}


# LOJA
STORE()
{
   #LISTA DE ARMAS
   revolver=(
      "Taurus 817    .38         250    R$"
      "Taurus 88     .38         1.000  R$"
      "Colt Python   .357        3.500  R$"
   )

while : ;do
    clear
    BAR # Barra de informações do usuario
    printf "Seja bem vindo ao 'ARMADO ATÉ OS DENTES' Store.\nVeja a lista para você comprar, lembre-se de ter dinheiro suficiente.\nPara retornar digite: retornar\n\n"
    printf "${red}### Revolver${end}\n"
    printf "1) ${revolver[0]}\n"
    printf "2) ${revolver[1]}\n"
    printf "3) ${revolver[2]}\n"

    printf "\n> "; read choice
    case "$choice" in
       1) VALOR="250"  ; [ "$VALOR" -gt "$MONEY" ] && { printf "Grana insuficiente.\n"; ENTER; continue ;}
          MONEY=$(($MONEY - $VALOR))
          GUN=$(printf "${revolver[0]}" | awk '{print $1, "Modelo",$2}') # Pegando campos Arma e modelo
          POWER="3"
          printf "Sua arma agora é '${GUN}' e seu poder é '${POWER}'"
       ;;
       2) VALOR="1000" ; [ "$VALOR" -gt "$MONEY" ] && { printf "Grana insuficiente.\n"; ENTER; continue ;} ;;
       3) VALOR="3500" ; [ "$VALOR" -gt "$MONEY" ] && { printf "Grana insuficiente.\n"; ENTER; continue ;} ;;
       retornar) break                             ;;
       *) printf "Já fumou? opção inválida man.\n" ;;
    esac
read
done
}


# Quadrilha
GANG() # Entrar para uma gang
{
   printf "EM desenvolvimento\n"
   ENTER
}


#==================================#


####### Loop Principal ########
while true ;do
    clear
    BAR
    cat <<-EOF
Cafofo.
Para ver as instruções do jogo digite: ajuda
Para ver a história do personagem digite: historia

1) Rolê na Cidade
2) Entrar para uma quadrilha
3) Ir para Zona
4) Pequenos Roubos
5) Visitar a Loja
6) Se Suicidar
EOF
    printf "\n> "; read choice
    case $choice in
        3) ZONE        ;;

        4) SMALL_THEFT ;;

        5) STORE       ;;

        6) printf "BOOOOOM, sua cabeça explodiu.\n"; exit 0 ;;

        ajuda) HELP                                         ;;

        historia|história) HISTORY                          ;;

        greencard) 
           if [ "$greencard" -lt "1" ]; then
              greencard="1"
              MONEY=$(($MONEY + 500))
           else
              printf "Você já adquiriu o Greencard.\n\n"
              ENTER
              continue
           fi
         ;;

        *) printf "Hey brother, opção inválida.\n"          ;;
    esac
done

 
 

